# -*- coding: utf-8 -*-
from django import forms
from django.forms import ModelForm
from localidades.models import Ciudad
from models import DetalleRegion
import autocomplete_light


def get_choices_for_region_form():
    lista_retornar= [(0,u'País'),(1,u'Departamento/Provincia'),(2,u'Ciudad')]
    return lista_retornar


class DetalleRegionForm(ModelForm):
    nivel_de_detalle = forms.ChoiceField(choices = get_choices_for_region_form())
    ciudad = forms.ModelChoiceField(Ciudad.objects.all(),
                                    widget = autocomplete_light.widgets.ChoiceWidget('AutocompleteCiudadDetalleRegion'))
    class Meta:
        exclude = ('especie',)
        widgets = autocomplete_light.get_widgets_dict(DetalleRegion)
        model = DetalleRegion
    def __init__(self, *args, **kw):
        super(DetalleRegionForm, self).__init__(*args, **kw)
        self.fields['coordenadas'].help_text = ''
        self.fields['pais'].label = u'País/Territorio'
        new_order = self.fields.keyOrder[:-1]
        new_order.insert(0, 'nivel_de_detalle')
        self.fields.keyOrder = new_order
        
    def clean(self):
        if int(self.cleaned_data['nivel_de_detalle'])==0:
            if not self.cleaned_data['pais']:
                msg = u"Si eligió el nivel de detalle país, debe completar el país."
                self._errors['pais'] = self.error_class([msg])
                del self.cleaned_data['pais']
        if int(self.cleaned_data['nivel_de_detalle'])==1:
            if not self.cleaned_data['departamento']:
                msg = u"Si eligió el nivel de detalle departamento, debe completar el departamento."
                self._errors['departamento'] = self.error_class([msg])
                del self.cleaned_data['departamento']
        if int(self.cleaned_data['nivel_de_detalle'])==2:
            if not self.cleaned_data['ciudad']:
                msg = u"Si eligió el nivel de detalle de ciudad, debe completar la ciudad."
                self._errors['ciudad'] = self.error_class([msg])
                del self.cleaned_data['ciudad']
        return self.cleaned_data
